package com.niiwoo.civet.user.service;

import com.niiwoo.civet.user.dto.request.OCRAuthInfoRequestDTO;
import com.niiwoo.civet.user.dto.request.OCRNotAuthInfoRequestDTO;
import com.niiwoo.civet.user.dto.request.OCRStatusInfoRequestDTO;
import com.niiwoo.civet.user.dto.response.OCRStatusInfoResponseDTO;
import com.niiwoo.civet.user.dto.response.UserIdentityInfoResponseDTO;
import com.niiwoo.civet.user.dto.response.UserPortraitParamDTO;
import java.util.List;
import java.util.Set;

/**
 * 用户身份信息API
 */
public interface UserIdentityDubboService {

    /**
     * 获取用户身份信息
     *
     * @param userId 用户id
     */
    UserIdentityInfoResponseDTO get(String userId);
    
    /**
     * 通过userID集合查询用户信息
     * @param userIdSet
     * @return
     */
    List<UserIdentityInfoResponseDTO> queryUserIdentityListByUserIdSet(Set<String> userIdSet);

    /**
     * 保存认证的OCR信息
     */
    boolean saveAuthInfo(OCRAuthInfoRequestDTO dto);

    /**
     * 资产端同步用户OCR信息和身份证照片
     */

    default boolean assetSyncOcrInfo(OCRAuthInfoRequestDTO dto){
        return false;
    }

    /**
     * 获取OCR相关状态
     */
    OCRStatusInfoResponseDTO getIdentityAndStatusAndImage(OCRStatusInfoRequestDTO dto);

    /**
     * 保存OCR未认证信息, 在OCR关闭情况下调用
     * @param dto
     * @return
     */
    boolean focusSaveAuthInfo(OCRNotAuthInfoRequestDTO dto);

    boolean hasOtherIdentityMapping(String userId, String idCardNo);


    /**
     * 查询用户画像需要的参数
     * @param userId
     * @return
     */
    UserPortraitParamDTO queryUserPortraitParam(String userId);


    /**
     * 根据身份证号码查询用户ID
     * @param idCard 身份证号码
     * @return
     */
    String queryUserIdByIdCard(String idCard);

    /**
     * 根据用户真实姓名查询身份信息列表
     * @param realName
     * @return
     */
    default List<UserIdentityInfoResponseDTO> queryListByRealName(String realName){return null;}
}
